package com.example.bjsfpost.sap;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.List;

@Data
public class SapRoutingRequestDTO implements Serializable {
    /**
     * 工艺路线维护-抬头数据
     */
    @JsonProperty("FI_HEAD")
    private List<ZppRoutingMaintainHead> fiHead;

    @JsonProperty("ZPP_ROUTING_MAINTAIN_HEAD")
    private ZppRoutingMaintainHead zppRoutingMaintainHead;
    @Data
    public static class ZppRoutingMaintainHead implements Serializable {
        private static final long serialVersionUID = 5630720372568810353L;
        /**
         * 工厂
         */
        @JsonProperty("WERKS")
        private String werks;
        /**
         * 任务清单组码
         */
        @JsonProperty("PLNNR")
        private String plnnr;
        /**
         * 任务清单类型
         */
        @JsonProperty("PLNTY")
        private String plnty;
        /**
         * 关键日期
         */
        @JsonProperty("STTAG")
        private String sttag;
        /**
         * 组计数器
         */
        @JsonProperty("PLNAL")
        private String plnal;
        /**
         * 任务清单描述
         */
        @JsonProperty("KTEXT")
        private String ktext;
        /**
         * 任务清单使用
         */
        @JsonProperty("VERWE")
        private String verwe;
        /**
         * 状态
         */
        @JsonProperty("STATU")
        private String statu;
        /**
         * 负责计划员组/部门
         */
        @JsonProperty("VAGRP")
        private String vagrp;
        /**
         * 从批量
         */
        @JsonProperty("LOSVN")
        private String losvn;
        /**
         * 到批量
         */
        @JsonProperty("LOSBS")
        private String losbs;
        /**
         * 任务清单计量单位
         */
        @JsonProperty("PLNME")
        private String plnme;
    }
    @JsonProperty("FT_OPERATION")
    private List<ZppRoutingMaintainOperation> ftOperation;
    @Data
    public static class ZppRoutingMaintainOperation implements Serializable {
        private static final long serialVersionUID = -9154593565585951767L;
        /**
         * 操作/活动编号
         */
        @JsonProperty("VORNR")
        private String vornr;
        /**
         * 工作中心
         */
        @JsonProperty("ARBPL")
        private String arbpl;
        /**
         * 工厂
         */
        @JsonProperty("WERKS")
        private String werks;
        /**
         * 控制码
         */
        @JsonProperty("STEUS")
        private String steus;
        /**
         * 工序短文本
         */
        @JsonProperty("LTXA1")
        private String ltxa1;
        /**
         * 基本数量
         */
        @JsonProperty("BMSCH")
        private String bmsch;
        /**
         * 作业/工序的计量单位
         */
        @JsonProperty("MEINH")
        private String meinh;
        /**
         * 用于转换任务清单和工序计量单位的计数器
         */
        @JsonProperty("UMREZ")
        private String umrez;
        /**
         * 用于转换工艺路线和工序单位的分母
         */
        @JsonProperty("UMREN")
        private String umren;
        /**
         * 休息
         */
        @JsonProperty("ZMERH")
        private String zmerh;
        /**
         * 标准值
         */
        @JsonProperty("VGW01")
        private String vgw01;
        /**
         * 标准值计量单位
         */
        @JsonProperty("VGE01")
        private String vge01;
        /**
         * 标准值
         */
        @JsonProperty("VGW02")
        private String vgw02;
        /**
         * 标准值计量单位
         */
        @JsonProperty("VGE02")
        private String vge02;
        /**
         * 标准值
         */
        @JsonProperty("VGW03")
        private String vgw03;
        /**
         * 标准值计量单位
         */
        @JsonProperty("VGE03")
        private String vge03;
        /**
         * 标准值
         */
        @JsonProperty("VGW04")
        private String vgw04;
        /**
         * 标准值计量单位
         */
        @JsonProperty("VGE04")
        private String vge04;
        /**
         * 最长等待时间
         */
        @JsonProperty("ZLMAX")
        private String zlmax;
        /**
         * 最大等待时间单位
         */
        @JsonProperty("ZEILM")
        private String zeilm;
        /**
         * 最短等待时间
         */
        @JsonProperty("ZLPRO")
        private String zlpro;
        /**
         * 需求等待时间单位
         */
        @JsonProperty("ZEILP")
        private String zeilp;
        /**
         * 标准排队时间
         */
        @JsonProperty("ZWNOR")
        private String zwnor;
        /**
         * 标准排队时间单位
         */
        @JsonProperty("ZEIWN")
        private String zeiwn;
        /**
         * 最小排队时间
         */
        @JsonProperty("ZWMIN")
        private String zwmin;
        /**
         * 最小排队时间单位
         */
        @JsonProperty("ZEIWM")
        private String zeiwm;
        /**
         * 标准移动时间
         */
        @JsonProperty("ZTNOR")
        private String ztnor;
        /**
         * 标准运输时间单位
         */
        @JsonProperty("ZEITN")
        private String zeitn;
        /**
         * 最小运输时间
         */
        @JsonProperty("ZTMIN")
        private String ztmin;
        /**
         * 最小运输时间单位
         */
        @JsonProperty("ZEITM")
        private String zeitm;
        /**
         * 所需分解
         */
        @JsonProperty("SPMUS")
        private String spmus;
        /**
         * 最大分解号
         */
        @JsonProperty("SPLIM")
        private String splim;
        /**
         * 最小加工时间单位
         */
        @JsonProperty("ZEIMB")
        private String zeimb;
        /**
         * 最小加工时间
         */
        @JsonProperty("ZMINB")
        private String zminb;
        /**
         * 要求重叠
         */
        @JsonProperty("UEMUS")
        private String uemus;
        /**
         * 可选重叠
         */
        @JsonProperty("UEKAN")
        private String uekan;
        /**
         * 标志:流水生产
         */
        @JsonProperty("FLIES")
        private String flies;
        /**
         * 没有重叠
         */
        @JsonProperty("UENICHT")
        private String uenicht;
        /**
         * 最小重叠时间单位
         */
        @JsonProperty("ZEIMU")
        private String zeimu;
        /**
         * 最小交叉时间
         */
        @JsonProperty("ZMINU")
        private String zminu;
        /**
         * 最小发送数量
         */
        @JsonProperty("MINWE")
        private String minwe;
        /**
         * 与成本核算相关标志
         */
        @JsonProperty("CKSELKZ")
        private String ckselkz;
        /**
         * 指示符：带外协加工的外部处理工序
         */
        @JsonProperty("FRDLB")
        private String frdlb;
        /**
         * 采购信息记录的编号
         */
        @JsonProperty("INFNR")
        private String infnr;
        /**
         * 采购组织
         */
        @JsonProperty("EKORG")
        private String ekorg;
        /**
         * 物料组
         */
        @JsonProperty("MATKL")
        private String matkl;
        /**
         * 外协加工的采购组
         */
        @JsonProperty("EKGRP")
        private String ekgrp;
        /**
         * 供应商或债权人的帐号
         */
        @JsonProperty("LIFNR")
        private String lifnr;
        /**
         * 计划的天数内交货
         */
        @JsonProperty("PLIFZ")
        private String plifz;
        /**
         * 价格单位
         */
        @JsonProperty("PEINH")
        private String peinh;
        /**
         * 成本要素
         */
        @JsonProperty("SAKTO")
        private String sakto;
        /**
         * 采购信息记录中的净价
         */
        @JsonProperty("PREIS")
        private String preis;
        /**
         * 货币码
         */
        @JsonProperty("WAERS")
        private String waers;
    }
    @JsonProperty("FT_TASK")
    private List<ZppRoutingMaintainTask> ftTask;
    @Data
    public static class ZppRoutingMaintainTask implements Serializable{
        private static final long serialVersionUID = -1780687335387388931L;
        /**
         * 组计数器
         */
        @JsonProperty("PLNAL")
        private String plnal;
        /**
         * 物料号
         */
        @JsonProperty("MATNR")
        private String matnr;
        /**
         * 工厂
         */
        @JsonProperty("WERKS")
        private String werks;
    }
    @JsonProperty("FT_BOM")
    private List<ZppRoutingMaintainBom> ftBom;
    @Data
    public static class ZppRoutingMaintainBom implements Serializable{
        private static final long serialVersionUID = -1780687335387388932L;

        /**
         * 物料号
         */
        @JsonProperty("MATNR")
        private String matnr;
        /**
         * BOM 项目号
         */
        @JsonProperty("POSNR")
        private String posnr;
        /**
         * BOM 组件
         */
        @JsonProperty("IDNRK")
        private String idnrk;
        /**
         * 操作/活动编号
         */
        @JsonProperty("VORNR")
        private String vornr;
    }
}
